const Router = require("koa-router");
const router = new Router();
// const api = require("../mock");
const api=require("../database/db.js");
const captcha = require("svg-captcha");
// router.get("/",async function(ctx){
//     console.log("----------------------");
//     ctx.body="哈哈哈";
// });
// router.get("/a",async function(ctx){
//     ctx.body="访问了a";
// });
// router.get("/b",async function(ctx){
//     ctx.body="访问了b";
// });

// router.get("/",async function(ctx){

//     // await ctx.render("a");
//     await ctx.render("a",{username:"何瑞阳"});

// });


router.get("/", async function (ctx) {
    await ctx.render("login");
});


// router.get("/login", async function (ctx) {
//     // console.log(ctx.URL);//浏览器的请求地址参数可以通过ctx.URL地址获取
//     // console.log(ctx.query);//可以通过ctx.query完成解析后的参数获取
//     let u={
//         username:ctx.query.username,
//         password:ctx.query.password
//     };
//     let user=api.loginFun(u);
//     if(user){
//         await ctx.redirect("/success");
//     }else{
//         await ctx.redirect("/?msg=用户名或者密码不正确");
//     }
// });


// post请求，是需要koa-body处理数据
// koa-body不仅能处理post请求的数据，同时也能够处理文件类型的上传
router.post("/login", async function (ctx) {
    console.log("请求体(报文体)数据:", ctx.request.body);

    if (ctx.request.body.code != ctx.session.code) {
        ctx.redirect("/?msg=验证码错误");
        return;
    }

    let u = {
        username: ctx.request.body.username,
        password: ctx.request.body.password
    };
    let user = api.loginFun(u);
    if (user) {

        ctx.session.user = user;//存值   
        await ctx.redirect("/success");
    } else {
        await ctx.redirect("/?msg=用户名或者密码不正确");
    }
});


//验证码
router.get("/codeImg", async function (ctx) {
    let codeObj = captcha.create({
        size: 4,// 验证码长度
        ignoreChars: '0o1i', // 验证码中排出0o1i
        noise: 1, // 干扰线条的数量
        color: true,// 验证码是否有颜色
        background: '#cc9966' //背景颜色
    });
    // console.log(codeObj.text);//验证码的文字
    // console.log(codeObj.data);//图片地址
    ctx.type = "svg";//设置响应数据类型
    ctx.session.code = codeObj.text;//存放session中
    ctx.body = codeObj.data;
});

router.get("/success", async function (ctx) {
    console.log(ctx.session.user);
    await ctx.render("main", {
        "user": ctx.session.user//取值
    });
});

let authUser = async function (ctx,next) {
    if (ctx.session.user) {
        await next();
    } else {
        ctx.redirect("/?msg=请先登录");
    }
};
router.get("/class",authUser, async function (ctx) {
    console.log(api.loadClassList());//数组
    await ctx.render("class", {
        data: {list:api.loadClassList()},
        user:ctx.session.user
       
    });


});
router.get("/student", authUser,async function (ctx) {

    await ctx.render("student", {
        data:{list:api.loadStuList()},
        user: ctx.session.user
    })
});
router.get("/loginOut", async function (ctx) {
    ctx.session.user = null;
    ctx.redirect("/");
});
router.get("/addClass",async function(ctx){
    ctx.render("addClass");
});
router.post("/addClass",async function(ctx){
    let className=ctx.request.body.className;
    api.insertClass(className);
    ctx.redirect("/class");

});
router.get("/edit",async function(ctx){
    let id=ctx.query.id;
    let classData=api.findClassById(id);
    console.log(classData);
    ctx.render("editClass",classData);
});

router.post("/edit",async function(ctx){
    let classData=ctx.request.body;
    api.updateClassById(classData);
    ctx.redirect("/class");
});

router.get("/delClass",async function(ctx){
    let id=ctx.query.id;
    api.deleteClassById(id);
    ctx.redirect("/class");
});
router.get("/file",async function(ctx){
    ctx.render("file");
});
router.post("/upload",async function(ctx){
    console.log("----------------------");

    // ctx.request.body：koa-body中间提供对请求体文本数据解析后的对象格式参数
    // ctx.request.files：koa-body中间件处理和存储文件相关参数
    // ctx.request.files.参数名可以获取对应的文件信息
    // console.log(ctx.request.files.headImg);
    // console.log(ctx.request.files.headImg.newFilename);

    let fileName=ctx.request.files.headImg.newFilename;//获取上传的文件名称
    // console.log(ctx.origin);//服务器地址
    ctx.body=`
        <div>文件上传的额外数据:${ctx.request.body.username}</div>
        <div><img src='/upload/${fileName}'></div>
        <div><img src='${ctx.origin}/upload/${fileName}'></div>

    `;

    
});
router.get("/addStudent",async function(ctx){
    let classList=api.loadClassList();//查询所有班级信息
    ctx.render("addStudent",{list:classList});
});
router.post("/addStudent",async function(ctx){
    console.log("--------");
    let stu=ctx.request.body;
    stu.img=ctx.request.files.img.newFilename;
    api.addStu(stu);
    ctx.redirect("/student");

});
router.get("/updateStudent",async function(ctx){
    let classList=api.loadClassList();//查询所有班级信息
    let id=ctx.query.id;//获取学生的id
    let stu=api.findStuById(id);//根据id查询学生相关的信息
    console.log(stu);
    ctx.render("editStudent",{
        list:classList,
        stu:stu
    });
});
router.post("/updateStudent",async function(ctx){
    let stu=ctx.request.body;
    let img=ctx.request.files.img.newFilename;
    stu.img=img;
    api.updateStuById(stu);
    ctx.redirect("/student");

});
router.get("/deleteStudent",async function(ctx){
    let id=ctx.query.id;
    api.deleteStuById(id);
    ctx.redirect("/student");
});

router.get(/\/.*/, async function (ctx) {
    await ctx.render("404");
});
exports.router = router;